package com.sxj.corejava.code07_面向对象.抽象类与接口;

/**
 * @author 石小俊
 * @date 2024年03月21日 19:51
 */
public class Test01_抽象类 {
    public static void main(String[] args) {
        Person man = new Man();
//        Person WoMan = new WoMan();
    }
}

// 1.当类中存在抽象方法时,该类必须是抽象类
// 2.抽象类不能实例化,可以有构造方法,构造方法主要用于子类继承使用
// 3.抽象类中可以有抽象方法,也可以有普通方法
// 4.抽象方法只有声明部分,没有方法体。即:抽象方法不需要实现,只是用于子类重写
// 5.子类继承抽象类之后,必须重写父类中的抽象方法。如果子类也是一个抽象类,可以不重写方法
abstract class Person {
    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public abstract void show();
}

class Man extends Person {
    public Man() {
    }

    public Man(String name, int age) {
        super(name, age);
    }

    @Override
    public void show() {
        System.out.println("这是Man");
    }
}

abstract class WoMan extends Person {
    public WoMan() {

    }

    public WoMan(String name, int age) {
        super(name, age);
    }

}
